home *** CD-ROM | disk | FTP | other *** search
Java Source | 1998-06-18 | 2.7 KB | 144 lines | [TEXT/dosa] |
- // Timer.java : this is a Java source code file for the program Facade.
- // Copyright 1998, Andrew S. Downs
- // andrew.downs@tulane.edu
- //
- // This source code is distributed as freeware.
- // Just keep this author information in the file. Enjoy!
-
- //import java.awt.*;
- //import java.beans.*;
- import java.io.*;
- import java.util.*;
-
- public class Timer implements Runnable, Serializable {
-
- protected transient Vector listeners = new Vector();
- private int interval = 1;
- private int interval2 = 0;
- private transient Thread runner;
-
- public Timer() {
- this.setInterval( 1 );
- reset();
- }
-
- public Timer( int i ) {
- this.setInterval( i );
- reset();
- }
-
- public Timer( int i, int j ) {
- this.setInterval( i );
- this.setInterval2( j );
- reset();
- }
-
- private void startTime() {
- if ( runner != null );
- runner.start();
- }
-
- private void stopTime() {
- if ( runner != null );
- runner.stop();
- }
-
- public void suspend() {
- if ( runner != null );
- runner.suspend();
- }
-
- public void resume() {
- if ( runner != null );
- runner.resume();
- }
-
- public void reset() {
- // time = 0;
- runner = new Thread( this );
- runner.start();
- }
-
- public int getInterval() {
- return interval;
- }
-
- public void setInterval( int seconds ) {
- interval = seconds;
- }
-
- public void setInterval2( int seconds ) {
- interval2 = seconds;
- }
-
- public void run() {
- while ( true ) {
-
- try {
- if ( interval2 > 0 )
- Thread.sleep( interval, interval2 );
- else if ( interval < 100 )
- Thread.sleep( interval * 1000 );
- else
- Thread.sleep( interval );
- }
- catch ( InterruptedException ex ) {
- }
-
- notifyTimerExpired();
- }
- }
-
- private void notifyTimerExpired() {
- TimerEvent evt = new TimerEvent( this );
-
- Vector v;
-
- synchronized( this ) {
- v = ( Vector ) listeners.clone();
- }
-
- for ( int i = 0; i < v.size(); i++ ) {
- TimerEventListener t = ( TimerEventListener )v.elementAt( i );
- t.timerExpired( evt );
- }
- }
-
- public void addListener( Object l ) {
- listeners.addElement( l );
- }
-
- public void removeListener( Object l ) {
- listeners.removeElement( l );
- }
-
- private void writeObject( ObjectOutputStream s ) throws IOException {
- s.defaultWriteObject();
- s.writeInt( interval );
-
- Vector v;
-
- synchronized( this ) {
- v = ( Vector ) listeners.clone();
- }
-
- for ( int i = 0; i < v.size(); i++ ) {
- // TimerEventListener t = ( TimerEventListener )v.elementAt( i );
- Object l = v.elementAt( i );
- if ( l instanceof Serializable )
- s.writeObject( l );
- }
- }
-
- private void readObject( ObjectInputStream s ) throws ClassNotFoundException, IOException {
- s.defaultReadObject();
- setInterval( s.readInt() );
-
- Object l;
- while ( ( l = s.readObject() ) != null )
- addListener( l );
-
- reset();
- }
- }
-